package com.lijian.study.mongo.repository;

import java.time.LocalDateTime;
import java.util.List;

import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.data.mongodb.repository.Query;

import com.lijian.study.mongo.Entity.User;

public interface UserRepository extends MongoRepository<User, String> {

    // 使用方法命名约定进行复杂查询
    List<User> findByName(String name);

    List<User> findByEmail(String email);

    List<User> findByNameAndEmail(String name, String email);

    // 使用@Query注解 进行复杂查询
    // 根据创建日期范围查询用户
    @Query("{ 'createdDate': { $gte: ?0, $lte: ?1 } }")
    List<User> findByCreatedDateBetween(LocalDateTime startDate, LocalDateTime endDate);

    // 根据角色名称查找用户
    @Query("{ 'roles': { $elemMatch: { 'roleName': ?0 } } }")
    List<User> findByRoleName(String roleName);

   
}
